package com.cowain.system.service;

import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cowain.base.core.domain.TreeSelect;
import com.cowain.base.core.domain.dto.SysMenuDto;
import com.cowain.base.core.domain.entity.SysMenuEntity;
import com.cowain.base.core.domain.vo.SysMenuVo;

import java.util.List;

/**
 * @author songxz
 * @date 2022/11/9
 */
public interface SysMenuService extends IService<SysMenuEntity> {
    /**
     * 菜单新增
     * @param menu
     * @return
     */
    boolean insertMenu(SysMenuEntity menu);

    /**
     * 菜单修改
     * @param menu
     * @return
     */
    Boolean updateMenu(SysMenuEntity menu);

    /**
     * 菜单删除
     * @param menuId
     * @return
     */
    boolean deleteMenuById(Long menuId);

    /**
     * 查询当前用户的菜单
     * @param menu
     * @return
     */
    List<SysMenuDto> selectMenuList(SysMenuVo menu);

    /**
     * 查询单个信息
     * @param menuId
     * @return
     */
    SysMenuEntity selectMenuById(Long menuId);

    /**
     * 获取菜单下拉树列表
     * @param menus
     * @return
     */
    List<Tree<Long>> buildMenuTreeSelect(List<SysMenuDto> menus);

    /**
     * 构建前端所需要树结构
     *
     * @param menus 菜单列表
     * @return 树结构列表
     */
    List<SysMenuDto> buildMenuTree(List<SysMenuDto> menus);
}
